home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_12_11 / phillip2 / pattern.c < prev    next >
C/C++ Source or Header  |  1993-05-24  |  7KB  |  279 lines

  1.  
  2.     /***********************************************
  3.     *
  4.     *    file d:\cips\pattern.c
  5.     *
  6.     *    Functions: This file contains
  7.     *       main
  8.     *
  9.     *    Purpose:
  10.     *       I use this program to create simple
  11.     *       patterns in images for illustrations.
  12.     *
  13.     *    External Calls:
  14.     *       gpcips.c - my_clear_text_screen
  15.     *       wtiff.c - create_allocate_tiff_file
  16.     *                 write_array_into_tiff_image
  17.     *
  18.     *    Modifications:
  19.     *       31 March 1991 - created
  20.     *       17 May 1993 - made this a command
  21.     *           line driven program.
  22.     *
  23.     ***********************************************/
  24.  
  25. #include "cips.h"
  26. #undef STUFF
  27.  
  28.  
  29. short out_image[ROWS][COLS];
  30.  
  31. main(argc, argv)
  32.    int argc;
  33.    char *argv[];
  34. {
  35.    int      count, i, ie, il, j, le, l, ll,
  36.             new_ie, new_il, w;
  37.    struct   tiff_header_struct image_header;
  38.  
  39.  
  40.    my_clear_text_screen();
  41.  
  42.    if(argc < 4 || argc > 4){
  43.       printf("\n usage: pattern file-name "
  44.              "length width\n"
  45.              "\n the program will multiply length "
  46.              "and width"
  47.              "\n by %d and %d", ROWS, COLS);
  48.       exit(-1);
  49.    }
  50.  
  51.    l = atoi(argv[2]);
  52.    w = atoi(argv[3]);
  53.  
  54.    image_header.lsb            = 1;
  55.    image_header.bits_per_pixel = 8;
  56.    image_header.image_length   = l*ROWS;
  57.    image_header.image_width    = w*COLS;;
  58.    image_header.strip_offset   = 1000;
  59.  
  60.    create_allocate_tiff_file(argv[1], &image_header, 
  61.                              out_image);
  62.  
  63.    new_ie = 1;
  64.    new_il = 1;
  65.    il     = 1;
  66.    ie     = 1;
  67.    ll     = ROWS+1;
  68.    le     = COLS+1;
  69.  
  70.  
  71.       /* make a rectangle  */
  72.    for(i=0; i<ROWS; i++){
  73.       for(j=0; j<COLS; j++){
  74.          if( i>=10 && i<=90 && j>=10 && j<=90)
  75.             out_image[i][j] = 0;
  76.          else
  77.             out_image[i][j] = 200;
  78.       }
  79.    }
  80.  
  81.    count = 1;
  82.  
  83.    for(i=0; i<l; i++){
  84.       for(j=0; j<w; j++){
  85.          printf("\nRunning %d of %d", count, l*w);
  86.          count++;
  87.          write_array_into_tiff_image(argv[1], out_image,
  88.                          new_il + i*ROWS,
  89.                          new_ie + j*COLS,
  90.                          new_il + i*ROWS + ROWS,
  91.                          new_ie + j*COLS + COLS);
  92.       }
  93.    }
  94.  
  95. }  /* ends main */
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102. #ifdef STUFF
  103.  
  104.  
  105. /*
  106.    The following are samples patterns you can stick
  107.    into the output image.
  108. */
  109.  
  110.  
  111.  
  112.  
  113.      /* make a step pattern of gray shades */
  114.    for(i=0; i<ROWS; i++)
  115.       for(j=0; j<COLS; j++)
  116.         out_image[i][j] = 0;
  117.    for(i=0; i<ROWS; i++)
  118.       for(j=10; j<20; j++)
  119.         out_image[i][j] = 5;
  120.    for(i=0; i<ROWS; i++)
  121.       for(j=20; j<30; j++)
  122.         out_image[i][j] = 10;
  123.    for(i=0; i<ROWS; i++)
  124.       for(j=30; j<40; j++)
  125.         out_image[i][j] = 20;
  126.  
  127.  
  128.      /*  make a club to look at thinning and mat */
  129.    for(i=0; i<ROWS; i++){
  130.       for(j=0; j<COLS; j++){
  131.         if( i>4 && i<11 && j>4 && j<17)
  132.           out_image[i][j] = 200;
  133.         else
  134.           out_image[i][j] = 0;
  135.     }
  136.    }
  137.    for(i=0; i<ROWS; i++){
  138.       for(j=0; j<COLS; j++){
  139.         if( i>1 && i<17 && j>4 && j<11)
  140.           out_image[i][j] = 200;
  141.     }
  142.    }
  143.  
  144.  
  145.       /*  make a rectangle with a hole in it */
  146.    for(i=0; i<ROWS; i++){
  147.       for(j=0; j<COLS; j++){
  148.         if( i>=5 && i<=8 && j>=5 && j<=18)
  149.           out_image[i][j] = 200;
  150.     }
  151.    }
  152.    for(i=0; i<ROWS; i++){
  153.       for(j=0; j<COLS; j++){
  154.         if( i>=15 && i<=18 && j>=5 && j<=18)
  155.           out_image[i][j] = 200;
  156.     }
  157.    }
  158.    for(i=0; i<ROWS; i++){
  159.       for(j=0; j<COLS; j++){
  160.         if( j>=5 && j<=8 && i>=5 && i<=18)
  161.           out_image[i][j] = 200;
  162.     }
  163.    }
  164.    for(i=0; i<ROWS; i++){
  165.       for(j=0; j<COLS; j++){
  166.         if( j>=15 && j<=18 && i>=5 && i<=18)
  167.           out_image[i][j] = 200;
  168.     }
  169.    }
  170.  
  171.      /* make the entire area white with a black hole
  172.      in it good for interior outline */
  173.    for(i=0; i<ROWS; i++){
  174.       for(j=0; j<COLS; j++){
  175.          if( i>=10 && i<=15 && j>=10 && j<=18)
  176.             out_image[i][j] = 0;
  177.          else
  178.             out_image[i][j] = 200;
  179.       }
  180.    }
  181.  
  182.  
  183.       /* make a square  */
  184.    for(i=0; i<ROWS; i++){
  185.       for(j=0; j<COLS; j++){
  186.          if( i>=8 && i<=18 && j>=8 && j<=18)
  187.             out_image[i][j] = 200;
  188.          else
  189.             out_image[i][j] = 0;
  190.       }
  191.    }
  192.  
  193.       /* make a square  with a hole in
  194.         it for closing practice */
  195.    for(i=0; i<ROWS; i++){
  196.       for(j=0; j<COLS; j++){
  197.          if( i>=8 && i<=13 && j>=8 && j<=13)
  198.             out_image[i][j] = 200;
  199.          else
  200.             out_image[i][j] = 0;
  201.       }
  202.    }
  203.    out_image[10][10] = 0;
  204.    out_image[11][10] = 0;
  205.  
  206.       /* make 2 small squares
  207.         illustrate closing and special closing */
  208.    for(i=0; i<ROWS; i++)
  209.       for(j=0; j<COLS; j++)
  210.          out_image[i][j] = 0;
  211.    for(i=0; i<ROWS; i++){
  212.       for(j=0; j<COLS; j++){
  213.          if( i>=8 && i<=13 && j>=8 && j<=9)
  214.             out_image[i][j] = 200;
  215.          if( i>=8 && i<=13 && j>=11 && j<=13)
  216.             out_image[i][j] = 200;
  217.       }
  218.    }
  219.  
  220.       /* make a rectangle  */
  221.    for(i=0; i<ROWS; i++){
  222.       for(j=0; j<COLS; j++){
  223.          if( i>=8 && i<=18 && j>=4 && j<=18)
  224.             out_image[i][j] = 200;
  225.          else
  226.             out_image[i][j] = 0;
  227.       }
  228.    }
  229.  
  230.       /* make a block letter A */
  231.    for(i=0; i<ROWS; i++)
  232.       for(j=0; j<COLS; j++)
  233.          out_image[i][j] = 0;
  234.    for(i=0; i<ROWS; i++)
  235.       for(j=0; j<COLS; j++)
  236.          if(i>=10 && i<=20 && j>=10 && j<=50)
  237.           out_image[i][j] = 200;
  238.    for(i=0; i<ROWS; i++)
  239.       for(j=0; j<COLS; j++)
  240.          if(i>=40 && i<=50 && j>=10 && j<=50)
  241.           out_image[i][j] = 200;
  242.    for(i=0; i<ROWS; i++)
  243.       for(j=0; j<COLS; j++)
  244.          if(i>=10 && i<=90 && j>=10 && j<=20)
  245.           out_image[i][j] = 200;
  246.    for(i=0; i<ROWS; i++)
  247.       for(j=0; j<COLS; j++)
  248.          if(i>=10 && i<=90 && j>=40 && j<=50)
  249.           out_image[i][j] = 200;
  250.  
  251.       /* make a broken line */
  252.    for(i=0; i<ROWS; i++)
  253.       for(j=0; j<COLS; j++)
  254.          out_image[i][j] = 0;
  255.    for(i=0; i<ROWS; i++)
  256.       for(j=0; j<COLS; j++)
  257.          if(i>=10 && i<=11 && j>=5 && j<=18)
  258.           out_image[i][j] = 200;
  259.    out_image[10][11] = 0;
  260.    out_image[11][11] = 0;
  261.  
  262.  
  263.       /* make two squares joined together */
  264.    for(i=0; i<ROWS; i++)
  265.       for(j=0; j<COLS; j++)
  266.          out_image[i][j] = 0;
  267.    for(i=0; i<ROWS; i++){
  268.       for(j=0; j<COLS; j++){
  269.          if( i>=5 && i<=15 && j>=5 && j<=9)
  270.             out_image[i][j] = 200;
  271.          if( i>=5 && i<=15 && j>=12 && j<=17)
  272.             out_image[i][j] = 200;
  273.       }
  274.    }
  275.    out_image[10][10] = 200;
  276.    out_image[10][11] = 200;
  277.  
  278. #endif
  279.